package com.cqeec.demo.util;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

/**
 * 数字格式化工具类
 * 
 * @Title: NumberFormatUtil
 * @Descripton: 把数字格式化为指定格式输出
 */
public class NumberUtil {
	
    /**
     * 根据指定的格式输出价格，调用方式为：priceFormat(3.0);或priceFormat(3.0,"###.00");
     * 
     * @param price Double类型的价格
     * @param pattern 格式化字符串，默认为：#,###.00
     * @return 返回格式化后的价格字符串
     */
    public static String priceFormat(Double price, String pattern){
        if(pattern == null || "".equals(pattern.trim())){
            pattern = "#,###.00";
        }
        DecimalFormat df = new DecimalFormat(pattern);
        return df.format(price);
    }
    
    /**
     * 把double类型的数字转换为int类型
     * 
     * @param num  double数字
     * @return     返回转换后的int数字
     */
    public static int doubleToInt(double num) {
    	Double d = 0D;
    	try {
			d = new Double(num);
		} catch (Exception e) {
		}
    	return d.intValue();
    }
    
    /**
     * 把字符串数字转换为整数
     * 
     * @param num  字符串数字
     * @return     返回转换的整数
     */
    public static int stringNumberToInt(String num) {
    	Integer k = 0;
    	try {
			k = Integer.valueOf(num);
		} catch (NumberFormatException e) {
		}
    	return k.intValue();
    }
    
    /**
     * 把字符串数字转换为长整数
     * 
     * @param num  字符串数字
     * @return     返回转换的长整数
     */
    public static long stringNumberToLong(String num) {
    	Long k = 0L;
    	try {
			k = Long.valueOf(num);
		} catch (NumberFormatException e) {
		}
    	return k;
    }
    
    /**
     * 把double数字开方后转成int输出
     * 
     * @param num   double数字
     * @return      返回开方后的int数字
     */
    public static int numberSqrt(double num) {
    	double d = Math.sqrt(num);
    	return doubleToInt(d);
    }
    
    /**
     * 去掉集合中重复元素后再返回
     * @param list 集合对象
     * @return 返回没有重复元素的集合
     */
    public static List<Long> removeDuplicate(List<Long> elements) {
    	List<Long> temp = new ArrayList<>(0);
    	for (Long element : elements) {
			if (temp.contains(element)) {
				continue;
			} else {
				temp.add(element);
			}
		}
    	return temp;
    }
    
    /**
     * 数字转换，把小写阿拉伯数字转换为大写数字
     * 
     * @param num 小写阿拉伯数字
     * @return 大写数字
     */
    public static String numberFormat(int num) {
    	switch (num) {
		case 1:
			return "一";
		case 2:
			return "二";
		case 3:
			return "三";
		case 4:
			return "四";
		case 5:
			return "五";
		case 6:
			return "六";
		case 7:
			return "七";
		case 8:
			return "八";
		case 9:
			return "九";
		default:
			return String.valueOf(num);
		}
    }
}
